Programmable integrated circuits (ICs) refer to a class of ICs that are programmed to perform specified functions. An example of a programmable IC is a field programmable gate array (FGPA). An FPGA typically includes an array of programmable tiles (e.g., circuit blocks). These programmable tiles may include, for example, input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAM), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay lock loops (DLLs), and so forth.
Each programmable tile typically includes both programmable interconnect circuitry and programmable logic circuitry. The programmable interconnect circuitry, for example, includes a large number of interconnect lines of varying lengths interconnected by programmable interconnect points (PIPs). The programmable logic circuitry, for example, implements the logic of a user design using programmable elements that may include, for example, function generators, registers, arithmetic logic, and so forth.
The programmable IC is programmed by loading configuration data into internal configuration memory cells of the device. In general, the configuration data specifies a user circuit design. The user circuit design is physically implemented within the programmable IC upon loading the configuration data into the device. The configuration data defines how the programmable elements are configured. The collective states of the individual memory cells determine the function of the device.
Typically, the configuration data, or circuit designs, are protected using asymmetric authentication. Asymmetric authentication is also known as “public key authentication”. Public key authentication is widely considered a secure mechanism for protecting data. Conventional computing systems built using the Harvard architecture or the von Neumann architecture, for example, require an inordinate amount of time to defeat public key authentication presuming the keys are of sufficient length.